python中三维矩阵转化为二维 numpy 三维矩阵 您所在的位置:网站首页 Python 三维矩阵与三维矩阵相乘 python中三维矩阵转化为二维 numpy 三维矩阵

python中三维矩阵转化为二维 numpy 三维矩阵

2024-05-22 04:58| 来源: 网络整理| 查看: 265

索引符号为"[ ]",对于Numpy中的高维矩阵,只要按照剥洋葱的套路来,“[ ]"是下标索引,也就是说,对相应维度上元素的索引,其大小不超过该维度上元素个数减一。什么意思呢,举例来说。假设我有一个三维矩阵,那么我对该矩阵的索引”[ ]“中不能超过三个对象。第一个对象中取出一个数,作为矩阵第一维上的索引,第二个对象中取出一个数,作为第二维上的索引,以此类推。

>>> a=np.reshape(np.arange(27),(3,3,3)) # 创建了一个3维矩阵a >>> a array([[[ 0, 1, 2], [ 3, 4, 5], [ 6, 7, 8]], [[ 9, 10, 11], [12, 13, 14], [15, 16, 17]], [[18, 19, 20], [21, 22, 23], [24, 25, 26]]]) >>> a[[1,0],[[1,0],[0,1]],1] #对a的索引是三个对象,指明第一维索引的object是一个长度为2的列表, #指明第二维索引的object是一个2维,第三个索引对象是一个整型数指明了第三维的索引 array([[13, 1], [10, 4]]) >>> a[1,[1,0]] array([[12, 13, 14], [ 9, 10, 11]]) >>> a[[1,0],1] array([[12, 13, 14], [ 3, 4, 5]]) >>> a[1,[1,2],1] array([13, 16]) >>>

再来解释下前面的说法。a矩阵在第一维上有三个元素(即三个2*2的矩阵),所以,第一个索引对象中的数大小不能超过(3-1=2)。因为矩阵a共有三个维度,所以方括号里不能超过三个对象。

怎么看矩阵的第几维有几个元素呢?很简单,对于第一维,你就看最外一层方括号”[]“里边出现了几个分隔的逗号,a中出现了2个逗号,那么这一维就有(2+1=3)个元素,对于第二维、第三维以同样的方法类推。

那么怎么看最好索引结果的形状呢?

这个也好理解。整体形状是受”[ ]“中维数高的对象约束,完整形状还要收实际索引的元素影响。

比如说,对于这个索引

a[[1,0],[[1,0],[0,1]],1]

它的第二维索引对象是一个2*2的矩阵形式。那么最后返回的结果就是一个以第二维对象形状维原型的矩阵

>>>a[1,[1,0]] array([[12, 13, 14], [ 9, 10, 11]])

再比如说这个索引,它的形状应该是一个长度维2的一维矩阵,里边的第一个元素是a[1,1],第二个元素是a[1,0]。a[1,1],a[1,0]是一个长度为三的一维矩阵,所以最后的结果就是一个二维的2*3矩阵矩阵。

>>>a[1,[1,0]] array([[12, 13, 14], [ 9, 10, 11]])

也就是说索引的对象的形状是最后结果的相应低维的形状。还是回到上面这个例子,索引的决定性形状是第一维长度为2,所以最后的结果的第一维长度为2.



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有